import java.util.*;

public class MyMap {
    public static void main(String[] args) {
        /**
         * 1. 现在有一个map集合如下：
         *     Map<Integer,String> map = new HashMap<Integer, String>();
         *     map.put(1, "Amy");
         *     map.put(2, "Joe");
         *     map.put(3, "Tom");
         *     map.put(4, "Susan");
         *     要求：
         *         1.遍历集合，并将序号与对应人名打印。
         *         2.向该map集合中插入一个编码为5姓名为控制台输入的人名的信息
         *         3.移除该map中的编号为4的信息
         *         4.将map集合中编号为3的姓名信息修改为"Tommy"
         *         5.再次遍历经过上述操作后的集合，并将序号与对应人名打印。(注：第一次输出和第二次输出需用空行隔开)
         */
        Map<Integer, String> map1 = new HashMap<Integer, String>();
        map1.put(1, "Amy");
        map1.put(2, "Joe");
        map1.put(3, "Tom");
        map1.put(4, "Susan");

        //1.遍历集合，并将序号与对应人名打印。
        Set set1 = map1.keySet();
        for (Object key : set1) {
            System.out.println(key + ":" + map1.get(key));
        }

        //2.向该map集合中插入一个编码为5,姓名为控制台输入的人名的信息
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入姓名：");
        String name = scan.next();
        map1.put(5, name);

        //3.移除该map中的编号为4的信息
        map1.remove(4);

        //4.将map集合中编号为3的姓名信息修改为"Tommy"
        map1.replace(3, "Tommy");
        System.out.println(" ");

        //5.再次遍历经过上述操作后的集合，并将序号与对应人名打印。
        Set reset = map1.keySet();
        for (Object key : reset) {
            System.out.println(key + ":" + map1.get(key));
        }


        /**
         * 2.给定["a", "b", "a", "b", "c", "a", "b", "c", "b"]字符串数组，然后使用Map的key来保存数组中字符串元素，value保存该字符串元素的出现次数，最后统计出各字符串元素的出现次数。
         */
        String[] strs = {"a", "b", "a", "b", "c", "a", "b", "c", "b"};
        List<String> list = Arrays.asList(strs);
        Map<String, Integer> map = new HashMap<String, Integer>();

        for (int i = 0; i < list.size(); i++) {
            map.put(list.get(i), 0);
        }

        Set set = map.keySet();
        Object[] setarr = set.toArray();
//        System.out.println(set);

        int value = 0;
        for (int i = 0; i < setarr.length; i++) {
            for (int j = 0; j < strs.length; j++) {
                if (setarr[i].equals(strs[j])) {
                    value++;
                    map.put(strs[j], value);
                }
            }
            value = 0;
        }
        System.out.println(" ");
        System.out.println(map);

        //方法二：
//        for (int i = 0; i < list.size(); i++) {
//            if (map.containsKey(list.get(i))) {
//                map.put(list.get(i), (map.get(list.get(i)) + 1));
//            } else {
//                map.put(list.get(i), 1);
//            }
//        }

    }
}
